package ch.halcyon.squareprogressbar.example.dialogs;
import ch.halcyon.squareprogressbar.example.R;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
/**
* This gives the user the possibility to set a custom colour to the
* SquareProgressBar by selecting a RGB-colour.
*
* @author yansigner
* @since 1.4.0
*/
public class CustomColourDialog extends Dialog {
private final Button saveButton;
private SeekBar rSeekBar;
private SeekBar gSeekBar;
private SeekBar bSeekBar;
private int choosenRGB;
public CustomColourDialog(final Context context) {
super(context);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.setContentView(R.layout.customcolourdialog);
this.setCancelable(false);
Button closeButton = (Button) this
.findViewById(R.id.returnColourDialog);
closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
saveButton = (Button) this.findViewById(R.id.shareColourDialog);
rSeekBar = (SeekBar) findViewById(R.id.rSeekBar);
rSeekBar.setMax(255);
rSeekBar.setProgress(111);
rSeekBar.setOnSeekBarChangeListener(rgbOnSeekBarListener());
gSeekBar = (SeekBar) findViewById(R.id.gSeekBar);
gSeekBar.setMax(255);
gSeekBar.setProgress(111);
gSeekBar.setOnSeekBarChangeListener(rgbOnSeekBarListener());
bSeekBar = (SeekBar) findViewById(R.id.bSeekBar);
bSeekBar.setMax(255);
bSeekBar.setProgress(111);
bSeekBar.setOnSeekBarChangeListener(rgbOnSeekBarListener());
calculateRGB();
}
private OnSeekBarChangeListener rgbOnSeekBarListener() {
return new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// nothing to do =)
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// nothing to do =)
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
calculateRGB();
}
};
}
/**
* Returns the save button of the dialog.
*
* @return the save {@link Button}.
*/
public Button getSaveButton() {
return saveButton;
}
/**
* Calculates the current set RGB value according to the three
* {@link SeekBar}s. This also changes the background of the Dialog.
*/
private void calculateRGB() {
int r = rSeekBar.getProgress();
int g = gSeekBar.getProgress();
int b = bSeekBar.getProgress();
((TextView) findViewById(R.id.rgbText)).setText("(" + r + "," + g + ","
+ b + ")");
choosenRGB = Color.rgb(r, g, b);
getWindow().setBackgroundDrawable(new ColorDrawable(choosenRGB));
}
/**
* Returns the Color which was chosen in the Dialog.
*
* @return the chosen RGB-colour.
*/
public int getChoosenRGB() {
return choosenRGB;
}
}